package org.moyrax.nereyda.services.errors
{
	import flash.system.Capabilities;
	
	public class ServiceMessages
	{
		public static const REQUEST_SUCCESS  :String = "REQUEST_SUCCESS";
		public static const FAILED_REQUEST   :String = "FAILED_REQUEST";
		public static const MAPPING_EXISTS   :String = "MAPPING_EXISTS";
		
		private var DEF_LANG :String = "es"; // Idioma predeterminado.
		
		/**
		 * Traduce un mensaje a su respectiva descripción
		 * en el idioma actual del sistema.
		 * 
		 * @param message Mensaje a traducir.
		 */
		public static function translateSystemMessage( message:String ):String
		{
			var lang :String = Capabilities.language;
			
			return( getInstance().translateMessage( message, lang) );
		}
		
		/**
		 * Traduce un mensaje a su respectiva descripción
		 * en el idioma especificado.
		 * 
		 * @param message Mensaje a traducir.
		 * @param langId  Identificador ISO del idioma. 
		 * 
		 * @TODO Agregar soporte externo para múltiples idiomas.
		 */
		public function translateMessage( message:String, langId:String ):String
		{
			var result :String   = "";
			var proc   :Function = this["translate" + langId.toUpperCase() ];
			
			if ( proc == null ) {
				proc = this["translate" + DEF_LANG ];
			}
			
			if ( proc is Function ) {
				result = proc(message);
			}
			
			return( result );
		}
		
		private function translateES( message:String ):String
		{
			var result :String = null;
			
			switch( message ) {
				case REQUEST_SUCCESS:{
					result = "La petición se realizó satisfactoriamente.";
					break;
				}
				case FAILED_REQUEST:{
					result = "El servidor no pudo procesar la petición.";
					break;
				}
				case MAPPING_EXISTS:{
					result = "El objeto ya está vinculado a un servicio.";
					break;
				}
			}
			
			return( result );
		}

		// Devuelve una instancia única de la clase.
		//
		private static var instance :ServiceMessages = null;
		
		public static function getInstance():ServiceMessages
		{
			if ( instance == null )
				instance = new ServiceMessages();
			
			return( instance );
		}
	}
}